{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 问题描述\n",
    "1. 在测试视频(OpenCV安装目录\\sources\\samples\\data)上，使用基于混合高斯模型的背景提取算法，提取前景并显示(显示二值化图像，前景为白色)。 \n",
    "2. 在1基础上，将前景目标进行分割，进一步使用不同颜色矩形框标记，并在命令行窗口中输出每个矩形框的位置和大小。 \n",
    "3. 安装ImageWatch，并在代码中通过设置断点，观察处理中间结果图像。 \n",
    "\n",
    "扩展作业： \n",
    "4. 使用光流估计方法，在前述测试视频上计算特征点，进一步进行特征点光流估计。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 在测试视频(OpenCV安装目录\\sources\\samples\\data)上，使用基于混合高斯模型的背景提取算法，提取前景并显示(显示二值化图像，前景为白色)。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面给出了不同时刻的背景提取以及前景提取的结果，从上至下为时间推移的运行结果:<br>\n",
    "![avatar](./img/背景1.png)\n",
    "![avatar](./img/背景2.png)\n",
    "![avatar](./img/背景3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出背景随着时间的推移越来越干净，模糊的黑影逐渐消失，但最终结果还是存在一点点黑影。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![avatar](./img/前景1.png)\n",
    "![avatar](./img/前景2.png)\n",
    "![avatar](./img/前景3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随着时间的推移，前景的噪声也相应减少了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 在1基础上，将前景目标进行分割，进一步使用不同颜色矩形框标记，并在命令行窗口中输出每个矩形框的位置和大小。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![avatar](./img/基于背景提取的运动估计结果1.png)\n",
    "![avatar](./img/基于背景提取的运动估计结果2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "程序运行过程中，由于人影子的影响，有的标记框将2个人框在了一起，有的甚至是多人，准确度不太高，需要采用一些消影的策略。上图为部分帧矩形框大小输出结果。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 安装ImageWatch，并在代码中通过设置断点，观察处理中间结果图像。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![avatar](./img/ImageWatch1.jpg)\n",
    "![avatar](./img/ImageWatch3.jpg)\n",
    "![avatar](./img/ImageWatch2.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过单步调试，能通过ImageWatch看到内存中声明的图像。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 使用光流估计方法，在前述测试视频上计算特征点，进一步进行特征点光流估计。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![avatar](./img/光流估计结果.gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从检测结果看出一帧图像中真正能有效计算L-K光流的特征很少，一般是两个方向灰度都变化剧烈的角点特征。从估计结果来看，L-K光流估计是有效的，效果还不错。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
